package br.com.financas.business.impl;

import java.util.ArrayList;
import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.base.business.impl.ServiceImpl;
import br.com.base.business.impl.validatores.StringValidator;
import br.com.base.exception.BaseException;
import br.com.base.model.UsuarioBase;
import br.com.financas.business.DicaService;
import br.com.financas.exception.NegociosMaisControleException;
import br.com.financas.exception.error.ErrorMensagemEnum;
import br.com.financas.model.Dica;
import br.com.financas.repository.DAO.DicaDAO;
import br.com.financas.repository.filter.FiltroDica;

/**
 * 
 * @author Milton Domingues
 *
 */
@Service
public class DicaServiceImpl extends ServiceImpl<Dica, Long, FiltroDica, DicaDAO> implements DicaService {

	@Autowired
	private DicaDAO DicaDAO;

	public DicaServiceImpl() {

	}

	@Override
	public DicaDAO getRepositorioDAO() {
		return this.DicaDAO;
	}

	@Override
	public void resolverPerDependencias(Dica vo, UsuarioBase usuario) {

	}

	@Override
	public void resolverPosDependencias(Dica vo,  UsuarioBase usuario) {

	}

	@Override
	public void resolverPreExcluir(Dica vo) {

	}

	@Override
	public void tratarDadosEntidade(Dica vo) {

	}

	@Override
	public void validarAlteracao(Dica vo) {
		Collection<BaseException> erros = new ArrayList<BaseException>();
		this.validarEntidade(vo, erros);
		if (erros.size() > 0) {
			throw new NegociosMaisControleException(erros);
		}
	}

	private void validarEntidade(Dica vo, Collection<BaseException> erros) {
		if (StringValidator.isNull(vo.getTitulo())) {
			erros.add(new NegociosMaisControleException(ErrorMensagemEnum.ERROR_CAMPO_OBRIGATORIO, "titulo"));
		}

	}

	@Override
	public void validarExclusao(Dica vo) {

	}

	@Override
	public void validarInclusao(Dica vo) {
		Collection<BaseException> erros = new ArrayList<BaseException>();
		this.validarEntidade(vo, erros);
		if (erros.size() > 0) {
			throw new NegociosMaisControleException(erros);
		}
	}

	@Override
	public void validarUnicidade(Dica vo) {

	}
}
